package com.dljd.javase.t4;

import java.util.Arrays;

public class Test {

    public int ufTest(int num){
        float sum=num+100;
        return (int)sum;
    }

    //1.数组查找操作：定义一个长度为10 的一维字符串数组，在每一个元素存放一个单词；然后运行时从命令行输入一个单词，程序判断数组是否包含有这个单词，包含这个单词就打印出“Yes”，不包含就打印出“No”。

    public static void searchWords(String word){
        String[] words={"hello","nice","tom","ok","angry","smile","smart","test","warry","boy"};
        //从数组里面查找某个元素，我们最好用的是线性查找法
        boolean isFind=false;
        for(int n=0;n<words.length;n++){
            if(word.equals(words[n])){
                System.out.println("Yes");
                isFind=true;
                break;
            }
        }
        if(!isFind) {
            System.out.println("No");
        }

    }

    //2.获取数组最大值和最小值操作：利用Java的Math类的random()方法，编写函数得到0到n之间的随机数，n是参数。并找出产生50个这样的随机数中最大的、最小的数，并统计其中>=60的有多少个。
    //提示：使用 int num=(int)(n*Math.random());获取随机数

    public static void randomArray(int num){
        int[] nums=new int[50];//定义一个数组，准备存储50个随机数

        //使用for循环来给数组的每个位置上的元素赋值，赋的值是随机生成的随机数（随机数做了范围控制，控制在0-num之间）
        for(int n=0;n<nums.length;n++){
            nums[n]=((int)(Math.random()*100000))%(num+1);
        }
        System.out.println(Arrays.toString(nums));
        //使用for循环，线性查找最大值和最小值
        int max=nums[0];//定义一个变量，存储数组的最大值（刚开始的时候假定数组第一个是最大值）
        int min=nums[0];//定义一个变量，存储数组的最小值（刚开始的时候假定数组第一个是最小值）
        int count=0;//定义一个变量，准备记录数组中有多少个数字大于等于60
        for(int n=1;n<nums.length;n++){
            if(nums[n]>max){//判断后面的数组每个位上数字是否大于之前的值
                max=nums[n];//如果大于。则把当前位上这个比较大的数，存储到那个记录最大值的变量max里面
            }
            if(nums[n]<min){//判断后面的数组每个位上数字是否小于之前的值
                min=nums[n];//如果小于。则把当前位上这个比较小的数，存储到那个记录最大值的变量min里面
            }
            if(nums[n]>=60){
                count++;
            }
        }
        System.out.println("数组中的最大值是："+max);
        System.out.println("数组中的最小值是："+min);
        System.out.println("数组中大于等于60的数字个数是：："+count);
    }


    //3.数组逆序操作：定义长度为10的数组，将数组元素对调，并输出对调前后的结果。
    //思路：把0索引和arr.length-1的元素交换，把1索引和arr.length-2的元素交换…..
    //	只要交换到arr.length/2的时候即可。

    public  static void test3(){
        int[] nums=new int[10];
        //循环给数组每个位置上赋值，赋的值是0-100之间的随机数
        for(int n=0;n<nums.length;n++){
            nums[n]=((int)(Math.random()*10000))%100;
        }

        //先把原有的数组内容输出出来
        for(int n=0;n<nums.length;n++){
            System.out.print(nums[n]+((n!=nums.length-1)?",":""));//如何把最后一个逗号去掉
        }
        System.out.println();
        //书写代码对数组元素进行逆序操作

        for(int n=0;n<nums.length/2;n++){
            //以下是交换的代码，
            //1.先把头放到一个临时变量里面
                int temp=nums[n];
            //2.再把尾里面的数字存到头里面
                nums[n]=nums[nums.length-1-n];
            //3.再把临时变量里面的值放到尾里面
                nums[nums.length-1-n]=temp;
        }


        //数组元素调动位置后，再把数组里面的内容输出出来
        for(int n=0;n<nums.length;n++){
            System.out.print(nums[n]+((n!=nums.length-1)?",":""));
        }
    }

    //5.二维数组遍历求和操作：用二重循环求出二维数组b所有元素的和：
    // int[][] b={{11},{21,22},{31,32,33}}
    public static void test4(){
        int[][] b={{11},{21,22},{31,32,33}};

        int sum=0;
        for(int n=0;n<b.length;n++){
            for(int m=0;m<b[n].length;m++){
                sum+=b[n][m];
            }
        }
        System.out.println(sum);
    }
    public static void main(String[] args) {
        test3();
//        int[] arrA = { 12, 22, 8, 49, 3 };
//        Arrays.sort(arrA);
//        System.out.println(Arrays.toString(arrA));

        //searchWords("ok");
//        randomArray(120);
    }
}
